package com.guaoran.jvm.GC;

/**
 * @author : guaoran
 * @Description
 *  此处证明目前使用的不是引用计数法：
 *      引用计数法：在对象中添加一个引用计数 器， 当有地方引用这个对象的时候计数器 +1 ，当失效的时候计数器 -1
 *      存在的问题是：当两个对象被相互引用时，则无法被回收
 * @date :2019/3/1 11:03
 */
public class RefCountGC {
   public Object instance = null;
   private byte[] bigSize = new byte[2* 1024 * 1024];

    public static void main(String[] args) {
        // -verbose:gc -XX:+PrintGCDetails
        // 打印GC 日志，看当引用设置为null时，会不会被回收，如果被回收，说明使用的不是引用计数法
        RefCountGC obj1 = new RefCountGC();
        RefCountGC obj2 = new RefCountGC();
        obj1.instance = obj2;
        obj2.instance = obj1;

        obj1 = null;
        obj2 = null;
        System.gc();
    }
}
